//
//  CZHomeTableViewCell.swift
//  Weibo24
//
//  Created by apple on 16/3/1.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit
import SnapKit

/*
    1. 分析页面
        一.原创微博,没有图片
        二.原创微博,有图片
        三.转发微博,没有图片
        四.转发微博,有图片

    2. 实现功能
*/
/*
    微博分解思路
    1. 优先创建一个原创微博-- OrginalView
    2. 在原创微博内容和底部视图(FooterView)之间,添加一个视图,就是转发微博(retweetView)

    3.原创微博的内容底部,加一个图片视图(PictureView),就能够显示图片
    4.转发微博有图片的视图,我们吧图片放在转发View里
*/
class CZHomeTableViewCell: UITableViewCell {
    //定义一个约束,用来记录底部视图
    var constant: Constraint?
    
    var statusViewModel: CZStatusViewModel?{
    
        didSet{
            orginalView.statusViewModel = statusViewModel
            
            footerView.footerViewModel = statusViewModel
            
            
            // cell有重用导致了约束加重,
            // 先清空约束
            constant?.uninstall()
            
            if statusViewModel?.statusModel?.retweeted_status == nil{
                // 没有转发微博
                
                /*

               修改这个约束 make.top.equalTo(retweetView.snp_bottom)
                隐藏转发微博视图
                */
                retweetView.hidden = true
                // 更新一下顶部约束
                footerView.snp_updateConstraints(closure: { (make) -> Void in
                    self.constant = make.top.equalTo(orginalView.snp_bottom).constraint
                })
                
            } else{
                // 有转发微博
                /*
                修改这个约束 make.top.equalTo(retweetView.snp_bottom)
                隐藏转发微博视图
                传值
                */
                retweetView.hidden = false
                
                retweetView.retweetViewModel = statusViewModel
                
                // 更新一下顶部约束
                footerView.snp_updateConstraints(closure: { (make) -> Void in
                    self.constant = make.top.equalTo(retweetView.snp_bottom).constraint
                })
            }
        }
        
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    private  func setupUI(){
    
        // 添加到视图里
        contentView.addSubview(orginalView)
        contentView.addSubview(footerView)
        contentView.addSubview(retweetView)
        
        // 添加约束 左 上 右 下
        orginalView.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(contentView.snp_left)
            make.top.equalTo(contentView.snp_top)
            make.right.equalTo(contentView.snp_right)
//            make.bottom.equalTo(contentView.snp_bottom)
        }
        
        /*
            有转发微博,也可能没有转发微博
            1.处理转发微博的时候,先按照都有转发微博
        */
        /*
            针对特例进行分析
            1. 当没有转发微博的时候,我需要改什么东西?
                make.top.equalTo(retweetView.snp_bottom)
                隐藏转发微博视图
        
        */
        retweetView.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(contentView.snp_left)
            make.right.equalTo(contentView.snp_right)
            
            // 注意
            make.top.equalTo(orginalView.snp_bottom)
            
        }
        
        // 添加 左, 上(orginalView),右边,下边 
        footerView.snp_makeConstraints { (make) -> Void in
            
          self.constant =  make.top.equalTo(retweetView.snp_bottom).constraint
            
            make.left.equalTo(contentView.snp_left)
            make.right.equalTo(contentView.snp_right)
            make.bottom.equalTo(contentView.snp_bottom)
            
            //设置高度
            make.height.equalTo(40)
        }
        
        
        //什么把视图,放值到contentView
        /*
            contentView是根据自动计算的左右上下
            一定注意
        */
        contentView.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(self.snp_left)
            make.top.equalTo(self.snp_top)
            make.right.equalTo(self.snp_right)
            
            make.bottom.equalTo(footerView.snp_bottom)
            
        }
    }
    
    // 把原创微博添加到视图里
    private lazy var orginalView: CZOrginal = CZOrginal()
    // 底部评论按钮
    private lazy var footerView: CZFooterView = CZFooterView()
    // 转发微博
    private lazy var retweetView: CZRetweetView = CZRetweetView()
    
}
